"use strict";
// ts 编译es5
let str = '你好';
// 数据类型
//布尔 boolean 
//数字类型 number 
//字符串类型 string 
//数组类型 array
// 第一种定义数组的方式
let arr = [1, 2, 3];
// 第二种定义数组的方式
let arr2 = [1, 2, 3];
// 第三种
let arr3 = [22, 33, 44, 'nihao', '44'];
//元组类型 tuple 属于数组的一种
let arr4 = ['你好', 2, false];
//枚举类型 enum 主要用于标识状态或者固定值
// status 0 未支付 1 支付 2 交易成功
var Flag;
(function (Flag) {
    Flag[Flag["success"] = 1] = "success";
    Flag[Flag["error"] = -1] = "error";
})(Flag || (Flag = {}));
let f = Flag.success;
var Color;
(function (Color) {
    Color[Color["red"] = 0] = "red";
    Color[Color["yellow"] = 1] = "yellow";
    Color[Color["blue"] = 2] = "blue";
})(Color || (Color = {}));
console.log(Color.red); //0
// 默认没有值 会以上一个值自增一
var Color2;
(function (Color2) {
    Color2[Color2["red"] = 0] = "red";
    Color2[Color2["yellow"] = 3] = "yellow";
    Color2[Color2["blue"] = 4] = "blue";
})(Color2 || (Color2 = {})); //0 3 4
//任意类型 any
// 任意类型的用处
let num = 123;
num = 'str';
// null undefined   其他类型的子类型
// 一个数据可以被定义为多种类型
let num2;
// void 表示没有任何类型，一般用于定义方法的时候没有返回值
// es5写法
// function run (){
//   console.log('run');
// }
// run()
// // 正确写法
function run() {
    console.log('111');
}
run();
// 正确写法
function nums() {
    return 123;
}
// never 是其他类型（包括null和 undefined）的子类型，代表从不会出现的值，
// 这意味着声明never的变量只能被never类型赋值
let a;
//a=23 //报错
a = undefined; //可以
//a=null //报错
var b;
//b =123 //报错
